from abc import ABC, abstractmethod

from dto.strategy_assessment import RiskAssessment
from dto.strategy_info import StrategyInfoMetadata
from dto.strategy_stock_day import StrategyStockDay

"""
抽象策略类，定义了核心分析方法和策略配置方法
"""


class BaseStrategy(ABC):

    @abstractmethod
    def analyze(self, trade_info: StockTradeInfo) -> RiskAssessment:
        """
        核心分析方法，子类必须实现该方法
        :param trade_info: 股票交易信息
        :return: 分析结果，通常是一个策略评分或结论
        """
        pass

    @abstractmethod
    def strategyConfig(self) -> StrategyInfoMetadata:
        """
        配置策略的参数，子类必须实现该方法
        :return: 返回一个字典，包含策略的配置信息
        """
        pass
